<?xml version="1.0"?>
<component name="org.nuxeo.ecm.webapp.pageproviders.contrib.override">

  <require>org.nuxeo.ecm.webapp.pageproviders.contrib</require>

  <extension point="providers" target="org.nuxeo.ecm.platform.query.api.PageProviderService">

    <documentation>
      This contribution declares page providers used by UI components.

      The page provider 'tree_children' is used to list children in the tree
      navigation.

      Note the "ecm:isProxy = 0" predicate optimization that is required to
      simplify greatly the request performed by the tree manager when browsing
      on folders with a lot of files when using the Visible SQL Storage.

      The page provider 'default_document_suggestion' is used by default by the
      component performing document suggestions.
    </documentation>

    <coreQueryPageProvider name="tree_children">
      <property name="maxResults">PAGE_SIZE</property>
      <pattern>
        SELECT * FROM Document WHERE ecm:parentId = ? AND ecm:isProxy = 0 AND
        ecm:mixinType = 'Folderish' AND ecm:mixinType != 'HiddenInNavigation'
        AND ecm:isVersion = 0 AND ecm:isTrashed = 0
      </pattern>
      <sort ascending="true" column="ecm:pos"/>
      <sort ascending="true" column="dc:title"/>
      <pageSize>50</pageSize>
    </coreQueryPageProvider>

    <coreQueryPageProvider name="default_document_suggestion">
      <property name="maxResults">PAGE_SIZE</property>
      <pattern escapeParameters="true" quoteParameters="false">
        SELECT * FROM Document WHERE ecm:fulltext LIKE '?*' AND ecm:mixinType !=
        'HiddenInNavigation' AND ecm:isVersion = 0 AND
        ecm:isTrashed = 0
      </pattern>
      <!-- sort column="dc:title" ascending="true" / sort by fulltext relevance -->
      <pageSize>5</pageSize>
    </coreQueryPageProvider>

    <coreQueryPageProvider name="domain_documents">
      <property name="maxResults">DEFAULT_NAVIGATION_RESULTS</property>
      <pattern>
        SELECT * FROM Document WHERE ecm:path STARTSWITH ?
        AND ecm:mixinType != 'Folderish' AND ecm:mixinType !=
        'SystemDocument' AND ecm:mixinType !=
        'HiddenInNavigation' AND ecm:isVersion = 0 AND ecm:isProxy = 0
        AND ecm:isTrashed = 0
      </pattern>
      <sort ascending="false" column="dc:modified"/>
      <pageSize>5</pageSize>
    </coreQueryPageProvider>

  </extension>

</component>
